package com.shiguiwu.springmybatis.spring.lifecycle.register;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.GenericBeanDefinition;

import java.util.Arrays;

/**
 * @description: 3，注册阶段。。。
 * @author: stone
 * @date: Created by 2021/3/23 12:45
 * @version: 1.0.0
 * @pakeage: com.shiguiwu.springmybatis.spring.lifecycle.register
 */
public class RegisterTests {

    public static void main(String[] args) {
        //1 定义个注册器
        DefaultListableBeanFactory factory = new DefaultListableBeanFactory();

        //定义一个bean定义信息
        GenericBeanDefinition definition = new GenericBeanDefinition();
        definition.setBeanClass(String.class);
        definition.getConstructorArgumentValues().addIndexedArgumentValue(0, "shiguiwu");
        //注册一个组件
        factory.registerBeanDefinition("name", definition);

        //是否包括某组件
        System.out.println(factory.containsBean("name"));

        //获取定义信息
        System.out.println(factory.getBeanDefinition("name"));

        //是否注册过bean定义
        System.out.println(factory.containsBeanDefinition("name"));

        //获取所有注册信息
        System.out.println(Arrays.asList(factory.getBeanDefinitionNames()));

        //获取bean定义的数量
        System.out.println(factory.getBeanDefinitionCount());

        //是否使用过名称
        System.out.println(factory.isBeanNameInUse("name"));

        System.out.println("别名相关操作。。。。。。。。。。。。。。。。。");

        //注册两个别名
        factory.registerAlias("name","alias-name-1");
        factory.registerAlias("name", "alias-name-2");

        //判断别名是否已经使用
        System.out.println(factory.isAlias("alias-name-2"));

        //获取所以别名
        System.out.println(Arrays.asList(factory.getAliases("name")));

        System.out.println(factory.getBean("name"));

    }
}
